using StudentManagement.Application.DTOs;

namespace StudentManagement.Application.Services;

public interface ICourseService
{
    Task<CourseDTO> GetCourseByIdAsync(int id);
    Task<CourseDTO> GetCourseByCodeAsync(string courseCode);
    Task<IEnumerable<CourseDTO>> GetAllCoursesAsync();
    Task<IEnumerable<CourseDTO>> GetCoursesByClassIdAsync(int classId);
    Task<IEnumerable<CourseDTO>> GetCoursesByTeacherIdAsync(int teacherId);
    Task<IEnumerable<CourseDTO>> SearchCoursesAsync(string keyword);
    Task<CourseDTO> CreateCourseAsync(CourseDTO courseDTO);
    Task<CourseDTO> UpdateCourseAsync(int id, CourseDTO courseDTO);
    Task DeleteCourseAsync(int id);
    Task<bool> CourseExistsAsync(int id);
    Task<bool> CourseCodeExistsAsync(string courseCode);
}